// MySQL数据库封装，支持多次握手
// 作者/版权：时光  timebk.cn
// 声明：保留版权的前提下可商用，当前代码片段遵循麻省理工学院开源协议
// -------------------------------------------------------------
// 【重要】data 结构 ({ 语句 , 参数 }) => { m : `` , p : []}
// type值：增：add；删：del；改(更新)：up；查：query；获取配置：db
// -------------------------------------------------------------

let mysql = require('mysql');
// 数据配置
let db = {
    host: '',// 服务器IP，本地可 localhost
    database: '', // 数据库名称
    user: '',// 用户名
    password: '',// 密码
    port: '',// 端口
    multipleStatements: true,// 多语句查询
};
module.exports = function th(type, data = {}) {
    let connection = mysql.createConnection(db);
    connection.connect();
    return new Promise((resolve, reject) => {
        switch (type) {
            // 获取配置
            case 'db':
                resolve(db)
                break;
            // 查询
            case 'query':
                connection.query(data.m, (err, result) => {
                    if (err) reject(err.message)
                    else resolve(result)
                })
                break;
            // 增加
            case 'add':
                connection.query(data.m, data.p, (err, result) => {
                    if (err) reject(err.message)
                    else resolve(result)
                })
                break;
            // 删除
            case 'del':
                connection.query(data.m, (err, result) => {
                    if (err) reject(err.message)
                    else resolve(result)
                })
                break;
            // 更新（更改）
            case 'up':
                connection.query(data.m, data.p, (err, result) => {
                    if (err) reject(err.message)
                    else resolve(result)
                })
                break;
            // 默认
            default:
                connection.query(data.m, data.p, (err, result) => {
                    if (err) reject(err.message)
                    else resolve(result)
                })
                break;
        }
        connection.end();
    })
}